package com.txts.road.app.user.service;

import com.txts.road.app.user.model.dto.ForgetPasswordDTO;
import com.txts.road.app.user.model.dto.SmsLoginDTO;
import com.txts.road.app.user.model.dto.UserDTO;
import com.txts.road.app.user.model.dto.UserRegisterDTO;
import com.txts.road.app.user.model.entity.UserEntity;
import com.baomidou.mybatisplus.extension.service.IService;
import com.txts.road.app.user.model.vo.UserStatisticsVO;
import com.txts.road.app.user.model.vo.UserVO;
import org.springframework.web.multipart.MultipartFile;

/**
 * 用户服务类
 *
 * @author baoyr
 * @since 2025-07-17 10:43
 */
public interface UserService extends IService<UserEntity> {
    /**
     * 用户注册
     *
     * @param registerDTO 注册信息
     * @return 注册结果
     */
    Boolean register(UserRegisterDTO registerDTO);

    /**
     * 手机验证码登录
     *
     * @param loginDTO 登录信息
     * @return true-登录成功，false-登录失败
     */
    Boolean loginBySms(SmsLoginDTO loginDTO);


    /**
     * 忘记密码
     *
     * @param forgetDTO 忘记密码信息
     * @return true-修改成功，false-修改失败
     */
    Boolean forgetPassword(ForgetPasswordDTO forgetDTO);

    /**
     * 获取用户信息
     *
     * @return 用户信息
     */
    UserVO getUserInfo();

    /**
     * 更新用户信息
     *
     * @param updateDTO 用户信息
     * @return true-修改成功，false-修改失败
     */
    Boolean updateUserInfo(UserDTO updateDTO);

    /**
     * 上传头像
     *
     * @param file 头像文件
     * @return 头像地址
     */
    String uploadAvatar(MultipartFile file);

    /**
     * 获取用户统计数据
     *
     * @return 用户统计数据
     */
    UserStatisticsVO getUserStatistics();

}
